home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / cinemat.c < prev    next >
C/C++ Source or Header  |  2000-05-07  |  54KB  |  1,439 lines

  1. /***************************************************************************
  2.  
  3. Cinematronics vector game handlers
  4.  
  5. driver by Aaron Giles
  6.  
  7. Special thanks to Neil Bradley, Zonn Moore, and Jeff Mitchell of the
  8. Retrocade Alliance
  9.  
  10. to do:
  11.  
  12. * Fix Sundance controls
  13.  
  14. ***************************************************************************/
  15.  
  16.  
  17. #include "driver.h"
  18. #include "vidhrdw/generic.h"
  19. #include "vidhrdw/vector.h"
  20. #include "cpu/ccpu/ccpu.h"
  21. #include "machine/z80fmly.h"
  22.  
  23.  
  24. /* from vidhrdw/cinemat.c */
  25. void cinemat_select_artwork (int monitor, int overlay_req, int backdrop_req, struct artwork_element *simple_overlay);
  26. void cinemat_init_colors (unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  27. int cinemat_vh_start (void);
  28. void cinemat_vh_stop (void);
  29. void cinemat_vh_screenrefresh (struct osd_bitmap *bitmap, int full_refresh);
  30. int cinemat_clear_list(void);
  31.  
  32. void spacewar_init_colors (unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  33. int spacewar_vh_start (void);
  34. void spacewar_vh_stop (void);
  35. void spacewar_vh_screenrefresh (struct osd_bitmap *bitmap, int full_refresh);
  36.  
  37. extern struct artwork_element starcas_overlay[];
  38. extern struct artwork_element tailg_overlay[];
  39. extern struct artwork_element sundance_overlay[];
  40. extern struct artwork_element solarq_overlay[];
  41.  
  42. /* from sndhrdw/cinemat.c */
  43. typedef void (*cinemat_sound_handler_proc)(UINT8, UINT8);
  44.  
  45. READ_HANDLER( cinemat_output_port_r );
  46. WRITE_HANDLER( cinemat_output_port_w );
  47. void cinemat_set_sound_handler(cinemat_sound_handler_proc sound_handler);
  48. void starcas_sound_w(UINT8 sound_val, UINT8 bits_changed);
  49. void warrior_sound_w(UINT8 sound_val, UINT8 bits_changed);
  50. void solarq_sound_w(UINT8 sound_val, UINT8 bits_changed);
  51. void ripoff_sound_w(UINT8 sound_val, UINT8 bits_changed);
  52. void spacewar_sound_w(UINT8 sound_val, UINT8 bits_changed);
  53. void demon_sound_w(UINT8 sound_val, UINT8 bits_changed);
  54.  
  55. extern struct Samplesinterface starcas_samples_interface;
  56. extern struct Samplesinterface warrior_samples_interface;
  57. extern struct Samplesinterface spacewar_samples_interface;
  58. extern struct Samplesinterface ripoff_samples_interface;
  59. extern struct Samplesinterface solarq_samples_interface;
  60.  
  61. extern struct MemoryReadAddress demon_sound_readmem[];
  62. extern struct MemoryWriteAddress demon_sound_writemem[];
  63. extern struct IOWritePort demon_sound_writeport[];
  64. extern struct AY8910interface demon_ay8910_interface;
  65. extern z80ctc_interface demon_z80ctc_interface;
  66.  
  67.  
  68. static struct MemoryReadAddress readmem[] =
  69. {
  70.     { 0x0000, 0x7fff, MRA_ROM },
  71.     { -1 }    /* end of table */
  72. };
  73.  
  74. static struct MemoryWriteAddress writemem[] =
  75. {
  76.     { 0x0000, 0x7fff, MWA_ROM },
  77.     { -1 }    /* end of table */
  78. };
  79.  
  80. static struct IOReadPort readport[] =
  81. {
  82.     { CCPU_PORT_IOSWITCHES,   CCPU_PORT_IOSWITCHES,   input_port_0_r },
  83.     { CCPU_PORT_IOINPUTS,     CCPU_PORT_IOINPUTS,     input_port_1_r },
  84.     { CCPU_PORT_IOOUTPUTS,    CCPU_PORT_IOOUTPUTS,    cinemat_output_port_r },
  85.     { CCPU_PORT_IN_JOYSTICKX, CCPU_PORT_IN_JOYSTICKX, input_port_2_r },
  86.     { CCPU_PORT_IN_JOYSTICKY, CCPU_PORT_IN_JOYSTICKY, input_port_3_r },
  87.     { -1 }  /* end of table */
  88. };
  89.  
  90. static struct IOWritePort writeport[] =
  91. {
  92.     { CCPU_PORT_IOOUTPUTS,    CCPU_PORT_IOOUTPUTS,    cinemat_output_port_w },
  93.     { -1 }  /* end of table */
  94. };
  95.  
  96.  
  97. /* Note: the CPU speed is somewhat arbitrary as the cycle timings in
  98.    the core are incomplete. */
  99. #define CINEMA_MACHINE(driver, minx, miny, maxx, maxy, samples, sample_interface)     \
  100. static struct MachineDriver machine_driver_##driver =                                 \
  101. {                                                                                     \
  102.     /* basic machine hardware */                                                     \
  103.     {                                                                                 \
  104.         {                                                                             \
  105.             CPU_CCPU,                                                                \
  106.             5000000,                                                                \
  107.             readmem,writemem,readport,writeport,                                    \
  108.             cinemat_clear_list, 1                                                    \
  109.         }                                                                             \
  110.     },                                                                                 \
  111.     38, 0,    /* frames per second, vblank duration (vector game, so no vblank) */     \
  112.     1,                                                                                 \
  113.     driver##_init_machine,                                                             \
  114.                                                                                     \
  115.     /* video hardware */                                                             \
  116.     400, 300, { minx, maxx, miny, maxy },                                             \
  117.     0,                                                                                 \
  118.     256 + 32768, 256,                                                                 \
  119.      cinemat_init_colors,                                                             \
  120.                                                                                     \
  121.     VIDEO_TYPE_VECTOR,                                                                 \
  122.     0,                                                                                 \
  123.     cinemat_vh_start,                                                                 \
  124.     cinemat_vh_stop,                                                                 \
  125.     cinemat_vh_screenrefresh,                                                         \
  126.                                                                                     \
  127.     /* sound hardware */                                                             \
  128.     0,0,0,0,                                                                         \
  129.     {                                                                                 \
  130.         {                                                                             \
  131.             samples,                                                                 \
  132.             sample_interface                                                         \
  133.         }                                                                             \
  134.     }                                                                                 \
  135. };
  136.  
  137.  
  138. /* switch definitions are all mangled; for ease of use, I created these handy macros */
  139.  
  140. #define SW7 0x40
  141. #define SW6 0x02
  142. #define SW5 0x04
  143. #define SW4 0x08
  144. #define SW3 0x01
  145. #define SW2 0x20
  146. #define SW1 0x10
  147.  
  148. #define SW7OFF SW7
  149. #define SW6OFF SW6
  150. #define SW5OFF SW5
  151. #define SW4OFF SW4
  152. #define SW3OFF SW3
  153. #define SW2OFF SW2
  154. #define SW1OFF SW1
  155.  
  156. #define SW7ON  0
  157. #define SW6ON  0
  158. #define SW5ON  0
  159. #define SW4ON  0
  160. #define SW3ON  0
  161. #define SW2ON  0
  162. #define SW1ON  0
  163.  
  164.  
  165. /***************************************************************************
  166.  
  167.   Spacewar
  168.  
  169. ***************************************************************************/
  170.  
  171. INPUT_PORTS_START( spacewar )
  172.     PORT_START /* switches */
  173.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  174.     PORT_DIPNAME( SW2|SW1, SW2ON |SW1ON,  "Time" )
  175.     PORT_DIPSETTING(        SW2OFF|SW1OFF, "0:45/coin" )
  176.     PORT_DIPSETTING(        SW2ON |SW1ON,  "1:00/coin" )
  177.     PORT_DIPSETTING(        SW2ON |SW1OFF, "1:30/coin" )
  178.     PORT_DIPSETTING(        SW2OFF|SW1ON,  "2:00/coin" )
  179.     PORT_DIPNAME( SW7,       SW7OFF,          DEF_STR( Unknown ) )
  180.     PORT_DIPSETTING(       SW7OFF,          DEF_STR( Off ) )
  181.     PORT_DIPSETTING(       SW7ON,          DEF_STR( On ) )
  182.     PORT_BIT ( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
  183.     PORT_BIT ( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  184.     PORT_BIT ( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
  185.     PORT_BIT ( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  186.  
  187.     PORT_START /* inputs */
  188.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  189.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER2 )
  190.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
  191.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  192.     PORT_BITX( 0x0800, IP_ACTIVE_LOW, 0, "Option 0", KEYCODE_0_PAD, IP_JOY_NONE )
  193.     PORT_BITX( 0x0400, IP_ACTIVE_LOW, 0, "Option 5", KEYCODE_5_PAD, IP_JOY_NONE )
  194.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  195.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER1 )
  196.     PORT_BITX( 0x0080, IP_ACTIVE_LOW, 0, "Option 7", KEYCODE_7_PAD, IP_JOY_NONE )
  197.     PORT_BITX( 0x0040, IP_ACTIVE_LOW, 0, "Option 2", KEYCODE_2_PAD, IP_JOY_NONE )
  198.     PORT_BITX( 0x0020, IP_ACTIVE_LOW, 0, "Option 6", KEYCODE_6_PAD, IP_JOY_NONE )
  199.     PORT_BITX( 0x0010, IP_ACTIVE_LOW, 0, "Option 1", KEYCODE_1_PAD, IP_JOY_NONE )
  200.     PORT_BITX( 0x0008, IP_ACTIVE_LOW, 0, "Option 9", KEYCODE_9_PAD, IP_JOY_NONE )
  201.     PORT_BITX( 0x0004, IP_ACTIVE_LOW, 0, "Option 4", KEYCODE_4_PAD, IP_JOY_NONE )
  202.     PORT_BITX( 0x0002, IP_ACTIVE_LOW, 0, "Option 8", KEYCODE_8_PAD, IP_JOY_NONE )
  203.     PORT_BITX( 0x0001, IP_ACTIVE_LOW, 0, "Option 3", KEYCODE_3_PAD, IP_JOY_NONE )
  204.  
  205.     PORT_START /* analog stick X - unused */
  206.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  207.  
  208.     PORT_START /* analog stick Y - unused */
  209.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  210. INPUT_PORTS_END
  211.  
  212.  
  213.  
  214. void spacewar_init_machine (void)
  215. {
  216.     ccpu_Config (0, CCPU_MEMSIZE_4K, CCPU_MONITOR_BILEV);
  217.     cinemat_set_sound_handler (spacewar_sound_w);
  218. }
  219.  
  220. static struct MachineDriver machine_driver_spacewar =
  221. {
  222.     /* basic machine hardware */
  223.     {
  224.         {
  225.             CPU_CCPU,
  226.             5000000,
  227.             readmem,writemem,readport,writeport,
  228.             cinemat_clear_list, 1
  229.         }
  230.     },
  231.     38, 0,    /* frames per second, vblank duration (vector game, so no vblank) */
  232.     1,
  233.     spacewar_init_machine,
  234.  
  235.     /* video hardware */
  236.     400, 300, { 0, 1024, 0, 768 },
  237.     0,
  238.     256 + 32768, 256,
  239.      spacewar_init_colors,
  240.  
  241.     VIDEO_TYPE_VECTOR,
  242.     0,
  243.     spacewar_vh_start,
  244.     spacewar_vh_stop,
  245.     spacewar_vh_screenrefresh,
  246.  
  247.     /* sound hardware */
  248.     0,0,0,0,
  249.     {
  250.         {
  251.             SOUND_SAMPLES,
  252.             &spacewar_samples_interface
  253.         }
  254.     }
  255. };
  256.  
  257.  
  258. /***************************************************************************
  259.  
  260.   Barrier
  261.  
  262. ***************************************************************************/
  263.  
  264. INPUT_PORTS_START( barrier )
  265.     PORT_START /* switches */
  266.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  267.     PORT_DIPNAME( SW1, SW1ON,  DEF_STR( Lives ) )
  268.     PORT_DIPSETTING(   SW1ON,  "3" )
  269.     PORT_DIPSETTING(   SW1OFF, "5" )
  270.     PORT_DIPNAME( SW2, SW2OFF, DEF_STR( Demo_Sounds ) )
  271.     PORT_DIPSETTING(   SW2ON,  DEF_STR( Off ) )
  272.     PORT_DIPSETTING(   SW2OFF, DEF_STR( On ) )
  273.     PORT_DIPNAME( SW3, SW3OFF, DEF_STR( Unknown ) )
  274.     PORT_DIPSETTING(   SW3OFF, DEF_STR( Off ) )
  275.     PORT_DIPSETTING(   SW3ON,  DEF_STR( On ) )
  276.     PORT_DIPNAME( SW4, SW4OFF, DEF_STR( Unknown ) )
  277.     PORT_DIPSETTING(   SW4OFF, DEF_STR( Off ) )
  278.     PORT_DIPSETTING(   SW4ON,  DEF_STR( On ) )
  279.     PORT_DIPNAME( SW5, SW5OFF, DEF_STR( Unknown ) )
  280.     PORT_DIPSETTING(   SW5OFF, DEF_STR( Off ) )
  281.     PORT_DIPSETTING(   SW5ON,  DEF_STR( On ) )
  282.     PORT_DIPNAME( SW6, SW6OFF, DEF_STR( Unknown ) )
  283.     PORT_DIPSETTING(   SW6OFF, DEF_STR( Off ) )
  284.     PORT_DIPSETTING(   SW6ON,  DEF_STR( On ) )
  285.     PORT_DIPNAME( SW7, SW7OFF, DEF_STR( Unknown ) )
  286.     PORT_DIPSETTING(   SW7OFF, DEF_STR( Off ) )
  287.     PORT_DIPSETTING(   SW7ON,  DEF_STR( On ) )
  288.  
  289.     PORT_START /* inputs */
  290.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER2 )
  291.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_PLAYER1 )
  292.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_PLAYER2 )
  293.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY | IPF_PLAYER1 )
  294.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_START1 )
  295.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_PLAYER2 )
  296.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_PLAYER1 )
  297.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_4WAY | IPF_PLAYER2 )
  298.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
  299.     PORT_BITX( 0x0040, IP_ACTIVE_LOW, 0, "Skill C", KEYCODE_C, IP_JOY_NONE )
  300.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
  301.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_START2 )
  302.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_4WAY | IPF_PLAYER1 )
  303.     PORT_BITX( 0x0004, IP_ACTIVE_LOW, 0, "Skill B", KEYCODE_B, IP_JOY_NONE )
  304.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED )
  305.     PORT_BITX( 0x0001, IP_ACTIVE_LOW, 0, "Skill A", KEYCODE_A, IP_JOY_NONE )
  306.  
  307.     PORT_START /* analog stick X - unused */
  308.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  309.  
  310.     PORT_START /* analog stick Y - unused */
  311.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  312. INPUT_PORTS_END
  313.  
  314.  
  315. void barrier_init_machine (void)
  316. {
  317.     ccpu_Config (1, CCPU_MEMSIZE_4K, CCPU_MONITOR_BILEV);
  318.     cinemat_set_sound_handler (0);
  319. }
  320.  
  321. void init_barrier(void)
  322. {
  323.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 0, 0, 0);
  324. }
  325.  
  326.  
  327. CINEMA_MACHINE (barrier, 0, 0, 1024, 768, 0, 0)
  328.  
  329.  
  330.  
  331.  
  332. /***************************************************************************
  333.  
  334.   Star Hawk
  335.  
  336. ***************************************************************************/
  337.  
  338. /* TODO: 4way or 8way stick? */
  339. INPUT_PORTS_START( starhawk )
  340.     PORT_START /* switches */
  341.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 2 )
  342.     PORT_DIPNAME( SW7,       SW7OFF,          DEF_STR( Unknown ) )
  343.     PORT_DIPSETTING(       SW7OFF,          DEF_STR( Off ) )
  344.     PORT_DIPSETTING(       SW7ON,          DEF_STR( On ) )
  345.     PORT_BIT ( SW6, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  346.     PORT_BIT ( SW5, IP_ACTIVE_LOW, IPT_START2 )
  347.     PORT_BIT ( SW4, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  348.     PORT_BIT ( SW3, IP_ACTIVE_LOW, IPT_START1 )
  349.     PORT_DIPNAME( SW2|SW1, SW2OFF|SW1OFF, "Game Time" )
  350.     PORT_DIPSETTING(       SW2OFF|SW1OFF, "2:00/4:00" )
  351.     PORT_DIPSETTING(       SW2ON |SW1OFF, "1:30/3:00" )
  352.     PORT_DIPSETTING(       SW2OFF|SW1ON,  "1:00/2:00" )
  353.     PORT_DIPSETTING(       SW2ON |SW1ON,  "0:45/1:30" )
  354.  
  355.     PORT_START /* input */
  356.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
  357.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  358.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
  359.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
  360.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
  361.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
  362.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
  363.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  364.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
  365.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
  366.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
  367.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
  368.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
  369.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
  370.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
  371.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
  372.  
  373.     PORT_START /* analog stick X - unused */
  374.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  375.  
  376.     PORT_START /* analog stick Y - unused */
  377.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  378. INPUT_PORTS_END
  379.  
  380.  
  381.  
  382. void starhawk_init_machine (void)
  383. {
  384.     ccpu_Config (1, CCPU_MEMSIZE_4K, CCPU_MONITOR_BILEV);
  385.     cinemat_set_sound_handler (0);
  386. }
  387.  
  388. void init_starhawk(void)
  389. {
  390.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 0, 0, 0);
  391. }
  392.  
  393.  
  394. CINEMA_MACHINE (starhawk, 0, 0, 1024, 768, 0, 0)
  395.  
  396.  
  397.  
  398.  
  399. /***************************************************************************
  400.  
  401.   Star Castle
  402.  
  403. ***************************************************************************/
  404.  
  405. INPUT_PORTS_START( starcas )
  406.     PORT_START /* switches */
  407.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  408.     PORT_SERVICE( SW7,     SW7ON )
  409.     PORT_DIPNAME( SW4|SW3, SW4OFF|SW3OFF, DEF_STR( Coinage ) )
  410.     PORT_DIPSETTING(       SW4ON |SW3OFF, DEF_STR( 2C_1C ) )
  411.     PORT_DIPSETTING(       SW4ON |SW3ON,  DEF_STR( 4C_3C ) )
  412.     PORT_DIPSETTING(       SW4OFF|SW3OFF, DEF_STR( 1C_1C ) )
  413.     PORT_DIPSETTING(       SW4OFF|SW3ON,  DEF_STR( 2C_3C ) )
  414.     PORT_DIPNAME( SW2|SW1, SW2OFF|SW1OFF, DEF_STR( Lives ) )
  415.     PORT_DIPSETTING(       SW2OFF|SW1OFF, "3" )
  416.     PORT_DIPSETTING(       SW2ON |SW1OFF, "4" )
  417.     PORT_DIPSETTING(       SW2OFF|SW1ON,  "5" )
  418.     PORT_DIPSETTING(       SW2ON |SW1ON,  "6" )
  419.     PORT_DIPNAME( SW5,     SW5OFF,        DEF_STR( Unknown ) )
  420.     PORT_DIPSETTING(       SW5OFF,        DEF_STR( Off ) )
  421.     PORT_DIPSETTING(       SW5ON,         DEF_STR( On ) )
  422.     PORT_DIPNAME( SW6,     SW6OFF,        DEF_STR( Unknown ) )
  423.     PORT_DIPSETTING(       SW6OFF,        DEF_STR( Off ) )
  424.     PORT_DIPSETTING(       SW6ON,         DEF_STR( On ) )
  425.  
  426.     PORT_START /* inputs */
  427.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
  428.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
  429.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
  430.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 )
  431.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
  432.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 )
  433.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
  434.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  435.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  436.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY )
  437.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
  438.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
  439.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
  440.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_START2 )
  441.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
  442.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
  443.  
  444.     PORT_START /* analog stick X - unused */
  445.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  446.  
  447.     PORT_START /* analog stick Y - unused */
  448.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  449. INPUT_PORTS_END
  450.  
  451.  
  452. void starcas_init_machine (void)
  453. {
  454.     ccpu_Config (1, CCPU_MEMSIZE_8K, CCPU_MONITOR_BILEV);
  455.     cinemat_set_sound_handler (starcas_sound_w);
  456. }
  457.  
  458. void init_starcas(void)
  459. {
  460.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 1, 0, starcas_overlay);
  461. }
  462.  
  463. CINEMA_MACHINE (starcas, 0, 0, 1024, 768, SOUND_SAMPLES, &starcas_samples_interface)
  464.  
  465. /***************************************************************************
  466.  
  467.   Tailgunner
  468.  
  469. ***************************************************************************/
  470.  
  471. INPUT_PORTS_START( tailg )
  472.     PORT_START /* switches */
  473.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  474.     PORT_DIPNAME( SW6|SW2|SW1, SW6OFF|SW2OFF|SW1OFF, "Shield Points" )
  475.     PORT_DIPSETTING(           SW6ON |SW2ON |SW1ON,  "15" )
  476.     PORT_DIPSETTING(           SW6ON |SW2OFF|SW1ON,  "20" )
  477.     PORT_DIPSETTING(           SW6ON |SW2ON |SW1OFF, "30" )
  478.     PORT_DIPSETTING(           SW6ON |SW2OFF|SW1OFF, "40" )
  479.     PORT_DIPSETTING(           SW6OFF|SW2ON |SW1ON,  "50" )
  480.     PORT_DIPSETTING(           SW6OFF|SW2OFF|SW1ON,  "60" )
  481.     PORT_DIPSETTING(           SW6OFF|SW2ON |SW1OFF, "70" )
  482.     PORT_DIPSETTING(           SW6OFF|SW2OFF|SW1OFF, "80" )
  483.     PORT_DIPNAME( SW3,           SW3OFF,                 DEF_STR( Coinage ) )
  484.     PORT_DIPSETTING(           SW3ON,                 DEF_STR( 2C_1C ) )
  485.     PORT_DIPSETTING(           SW3OFF,                 DEF_STR( 1C_1C ) )
  486.     PORT_DIPNAME( SW4,           SW4OFF,                 DEF_STR( Unknown ) )
  487.     PORT_DIPSETTING(           SW4OFF,                 DEF_STR( Off ) )
  488.     PORT_DIPSETTING(           SW4ON,                  DEF_STR( On ) )
  489.     PORT_DIPNAME( SW5,           SW5OFF,                 DEF_STR( Unknown ) )
  490.     PORT_DIPSETTING(           SW5OFF,                 DEF_STR( Off ) )
  491.     PORT_DIPSETTING(           SW5ON,                  DEF_STR( On ) )
  492.     PORT_DIPNAME( SW7,           SW7OFF,                 DEF_STR( Unknown ) )
  493.     PORT_DIPSETTING(           SW7OFF,                 DEF_STR( Off ) )
  494.     PORT_DIPSETTING(           SW7ON,                  DEF_STR( On ) )
  495.  
  496.     PORT_START /* inputs */
  497.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
  498.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
  499.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_UNUSED )
  500.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
  501.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
  502.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
  503.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
  504.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
  505.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
  506.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 )
  507.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 )
  508.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED )
  509.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
  510.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED )
  511.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED )
  512.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED )
  513.  
  514.     PORT_START /* analog stick X */
  515.     PORT_ANALOG( 0xfff, 0x800, IPT_AD_STICK_X, 100, 50, 0x200, 0xe00 )
  516.  
  517.     PORT_START /* analog stick Y */
  518.     PORT_ANALOG( 0xfff, 0x800, IPT_AD_STICK_Y, 100, 50, 0x200, 0xe00 )
  519. INPUT_PORTS_END
  520.  
  521.  
  522.  
  523. void tailg_init_machine (void)
  524. {
  525.     ccpu_Config (0, CCPU_MEMSIZE_8K, CCPU_MONITOR_BILEV);
  526.     cinemat_set_sound_handler (0);
  527. }
  528.  
  529. void init_tailg(void)
  530. {
  531.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 1, 0, tailg_overlay);
  532. }
  533.  
  534. CINEMA_MACHINE (tailg, 0, 0, 1024, 768, 0, 0)
  535.  
  536.  
  537.  
  538. /***************************************************************************
  539.  
  540.   Ripoff
  541.  
  542. ***************************************************************************/
  543.  
  544. INPUT_PORTS_START( ripoff )
  545.     PORT_START /* switches */
  546.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  547.     PORT_SERVICE( SW7,       SW7OFF )
  548.     PORT_DIPNAME( SW6,       SW6ON,          "Scores" )
  549.     PORT_DIPSETTING(       SW6ON,          "Individual" )
  550.     PORT_DIPSETTING(       SW6OFF,          "Combined" )
  551.     PORT_DIPNAME( SW5,       SW5ON,          DEF_STR( Demo_Sounds ) )
  552.     PORT_DIPSETTING(       SW5ON,          DEF_STR( Off ) )
  553.     PORT_DIPSETTING(       SW5OFF,          DEF_STR( On ) )
  554.     PORT_DIPNAME( SW4|SW3, SW4ON |SW3ON,  DEF_STR( Coinage ) )
  555.     PORT_DIPSETTING(       SW4ON |SW3OFF, DEF_STR( 2C_1C ) )
  556.     PORT_DIPSETTING(       SW4OFF|SW3OFF, DEF_STR( 4C_3C ) )
  557.     PORT_DIPSETTING(       SW4ON |SW3ON,  DEF_STR( 1C_1C ) )
  558.     PORT_DIPSETTING(       SW4OFF|SW3ON,  DEF_STR( 2C_3C ) )
  559.     PORT_DIPNAME( SW2|SW1, SW2OFF|SW1OFF, DEF_STR( Lives ) )
  560.     PORT_DIPSETTING(       SW2ON |SW1OFF, "4" )
  561.     PORT_DIPSETTING(       SW2OFF|SW1OFF, "8" )
  562.     PORT_DIPSETTING(       SW2ON |SW1ON,  "12" )
  563.     PORT_DIPSETTING(       SW2OFF|SW1ON,  "16" )
  564.  
  565.     PORT_START /* inputs */
  566.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  567.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
  568.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  569.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER1 )
  570.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
  571.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
  572.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
  573.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
  574.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
  575.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
  576.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  577.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  578.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
  579.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  580.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_START1 )
  581.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER2 )
  582.  
  583.     PORT_START /* analog stick X - unused */
  584.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  585.  
  586.     PORT_START /* analog stick Y - unused */
  587.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  588. INPUT_PORTS_END
  589.  
  590.  
  591. void ripoff_init_machine (void)
  592. {
  593.     ccpu_Config (1, CCPU_MEMSIZE_8K, CCPU_MONITOR_BILEV);
  594.     cinemat_set_sound_handler (ripoff_sound_w);
  595. }
  596.  
  597. void init_ripoff(void)
  598. {
  599.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 0, 0, 0);
  600. }
  601.  
  602.  
  603. CINEMA_MACHINE (ripoff, 0, 0, 1024, 768, SOUND_SAMPLES, &ripoff_samples_interface)
  604.  
  605.  
  606.  
  607.  
  608. /***************************************************************************
  609.  
  610.   Speed Freak
  611.  
  612. ***************************************************************************/
  613.  
  614. static UINT8 speedfrk_steer[] = {0xe, 0x6, 0x2, 0x0, 0x3, 0x7, 0xf};
  615.  
  616. READ_HANDLER( speedfrk_input_port_1_r )
  617. {
  618.     static int last_wheel=0, delta_wheel, last_frame=0, gear=0xe0;
  619.     int val, current_frame;
  620.  
  621.     /* check the fake gear input port and determine the bit settings for the gear */
  622.     if ((input_port_5_r(0) & 0xf0) != 0xf0)
  623.         gear = input_port_5_r(0) & 0xf0;
  624.  
  625.     val = (input_port_1_r(0) & 0xff00) | gear;
  626.  
  627.     /* add the start key into the mix */
  628.     if (input_port_1_r(0) & 0x80)
  629.         val |= 0x80;
  630.     else
  631.         val &= ~0x80;
  632.  
  633.     /* and for the cherry on top, we add the scrambled analog steering */
  634.     current_frame = cpu_getcurrentframe();
  635.     if (current_frame > last_frame)
  636.     {
  637.         /* the shift register is cleared once per 'frame' */
  638.         delta_wheel = input_port_4_r(0) - last_wheel;
  639.         last_wheel += delta_wheel;
  640.         if (delta_wheel > 3)
  641.             delta_wheel = 3;
  642.         else if (delta_wheel < -3)
  643.             delta_wheel = -3;
  644.     }
  645.     last_frame = current_frame;
  646.  
  647.     val |= speedfrk_steer[delta_wheel + 3];
  648.  
  649.     return val;
  650. }
  651.  
  652.  
  653. INPUT_PORTS_START( speedfrk )
  654.     PORT_START /* switches */
  655.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  656.     PORT_DIPNAME( SW7,     SW7OFF,        DEF_STR( Unknown ) )
  657.     PORT_DIPSETTING(       SW7OFF,        DEF_STR( Off ) )
  658.     PORT_DIPSETTING(       SW7ON,         DEF_STR( On ) )
  659.     PORT_DIPNAME( SW6,     SW6OFF,        DEF_STR( Unknown ) )
  660.     PORT_DIPSETTING(       SW6OFF,        DEF_STR( Off ) )
  661.     PORT_DIPSETTING(       SW6ON,         DEF_STR( On ) )
  662.     PORT_DIPNAME( SW5,     SW5OFF,        DEF_STR( Unknown ) )
  663.     PORT_DIPSETTING(       SW5OFF,        DEF_STR( Off ) )
  664.     PORT_DIPSETTING(       SW5ON,         DEF_STR( On ) )
  665.     PORT_DIPNAME( SW4,     SW4OFF,        DEF_STR( Unknown ) )
  666.     PORT_DIPSETTING(       SW4OFF,        DEF_STR( Off ) )
  667.     PORT_DIPSETTING(       SW4ON,         DEF_STR( On ) )
  668.     PORT_DIPNAME( SW3,     SW3OFF,        DEF_STR( Unknown ) )
  669.     PORT_DIPSETTING(       SW3OFF,        DEF_STR( Off ) )
  670.     PORT_DIPSETTING(       SW3ON,         DEF_STR( On ) )
  671.     PORT_DIPNAME( SW2|SW1, SW2OFF|SW1ON,  "Extra Time" )
  672.     PORT_DIPSETTING(       SW2ON |SW1ON,  "69" )
  673.     PORT_DIPSETTING(       SW2ON |SW1OFF, "99" )
  674.     PORT_DIPSETTING(       SW2OFF|SW1ON,  "129" )
  675.     PORT_DIPSETTING(       SW2OFF|SW1OFF, "159" )
  676.  
  677.     PORT_START /* inputs */
  678.     PORT_BIT (  0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
  679.     PORT_BIT (  0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
  680.     PORT_BIT (  0x2000, IP_ACTIVE_LOW, IPT_UNUSED )
  681.     PORT_BIT (  0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
  682.     PORT_BIT (  0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
  683.     PORT_BIT (  0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
  684.     PORT_BIT (  0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
  685.     PORT_BIT (  0x0100, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) /* gas */
  686.     PORT_BIT (  0x0080, IP_ACTIVE_LOW, IPT_START1 )
  687.     PORT_BIT (  0x0070, IP_ACTIVE_LOW, IPT_UNUSED ) /* gear shift, fake below */
  688.     PORT_BIT (  0x000f, IP_ACTIVE_LOW, IPT_UNUSED ) /* steering wheel, fake below */
  689.  
  690.     PORT_START /* analog stick X - unused */
  691.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  692.  
  693.     PORT_START /* analog stick Y - unused */
  694.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  695.  
  696.     PORT_START /* fake - steering wheel (in4) */
  697.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL, 100, 1, 0x00, 0xff )
  698.  
  699.     PORT_START /* fake - gear shift (in5) */
  700.     PORT_BIT ( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )
  701.     PORT_BITX( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER2, "1st gear", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  702.     PORT_BITX( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER2, "2nd gear", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  703.     PORT_BITX( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2, "3rd gear", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  704.     PORT_BITX( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER2, "4th gear", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  705. INPUT_PORTS_END
  706.  
  707.  
  708.  
  709. void speedfrk_init_machine (void)
  710. {
  711.     install_port_read_handler(0, CCPU_PORT_IOINPUTS, CCPU_PORT_IOINPUTS, speedfrk_input_port_1_r );
  712.  
  713.     ccpu_Config (0, CCPU_MEMSIZE_8K, CCPU_MONITOR_BILEV);
  714.     cinemat_set_sound_handler (0);
  715. }
  716.  
  717. void init_speedfrk(void)
  718. {
  719.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 0, 0, 0);
  720. }
  721.  
  722. CINEMA_MACHINE (speedfrk, 0, 0, 1024, 768, 0, 0)
  723.  
  724.  
  725.  
  726.  
  727. /***************************************************************************
  728.  
  729.   Sundance
  730.  
  731. ***************************************************************************/
  732.  
  733. INPUT_PORTS_START( sundance )
  734.     PORT_START /* switches */
  735.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  736.     PORT_DIPNAME( SW5,       SW5OFF,         DEF_STR( Unknown ) )
  737.     PORT_DIPSETTING(       SW5OFF,         DEF_STR( Off ) )
  738.     PORT_DIPSETTING(       SW5ON,          DEF_STR( On ) )
  739.     PORT_DIPNAME( SW6,       SW6OFF,         DEF_STR( Unknown ) )
  740.     PORT_DIPSETTING(       SW6OFF,         DEF_STR( Off ) )
  741.     PORT_DIPSETTING(       SW6ON,         DEF_STR( On ) )
  742.     PORT_DIPNAME( SW7,       SW7OFF,         DEF_STR( Unknown ) )
  743.     PORT_DIPSETTING(       SW7OFF,         DEF_STR( Off ) )
  744.     PORT_DIPSETTING(       SW7ON,         DEF_STR( On ) )
  745.     PORT_DIPNAME( SW4,       SW4ON,         DEF_STR( Coinage ) )
  746.     PORT_DIPSETTING(       SW4ON,         "1 coin/2 players" )
  747.     PORT_DIPSETTING(       SW4OFF,         "2 coins/2 players" )
  748.     PORT_DIPNAME( SW3,       SW3ON,         "Language" )
  749.     PORT_DIPSETTING(       SW3OFF,         "Japanese" )
  750.     PORT_DIPSETTING(       SW3ON,         "English" )
  751.     PORT_DIPNAME( SW2|SW1, SW2OFF|SW1ON, "Time" )
  752.     PORT_DIPSETTING(       SW2ON |SW1ON,  "0:45/coin" )
  753.     PORT_DIPSETTING(       SW2OFF|SW1ON,  "1:00/coin" )
  754.     PORT_DIPSETTING(       SW2ON |SW1OFF, "1:30/coin" )
  755.     PORT_DIPSETTING(       SW2OFF|SW1OFF, "2:00/coin" )
  756.  
  757.     PORT_START /* inputs */
  758.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) /* player 1 motion */
  759.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED ) /* player 2 motion */
  760.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_UNUSED ) /* player 1 motion */
  761.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED ) /* player 2 motion */
  762.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED ) /* 2 suns */
  763.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED ) /* player 1 motion */
  764.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED ) /* player 2 motion */
  765.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED ) /* player 1 motion */
  766.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  767.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) /* 4 suns */
  768.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) /* Grid */
  769.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED ) /* 3 suns */
  770.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
  771.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
  772.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  773.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED ) /* player 2 motion */
  774.  
  775.     PORT_START /* analog stick X - unused */
  776.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  777.  
  778.     PORT_START /* analog stick Y - unused */
  779.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  780. INPUT_PORTS_END
  781.  
  782.  
  783.  
  784. void sundance_init_machine (void)
  785. {
  786.     ccpu_Config (1, CCPU_MEMSIZE_8K, CCPU_MONITOR_16LEV);
  787.     cinemat_set_sound_handler (0);
  788. }
  789.  
  790. void init_sundance(void)
  791. {
  792.     cinemat_select_artwork (CCPU_MONITOR_16LEV, 1, 0, sundance_overlay);
  793. }
  794.  
  795. CINEMA_MACHINE (sundance, 0, 0, 1024, 768, 0, 0)
  796.  
  797.  
  798.  
  799.  
  800. /***************************************************************************
  801.  
  802.   Warrior
  803.  
  804. ***************************************************************************/
  805.  
  806. INPUT_PORTS_START( warrior )
  807.     PORT_START /* switches */
  808.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  809.     PORT_DIPNAME( SW7, SW7OFF, DEF_STR( Unknown ) )
  810.     PORT_DIPSETTING(   SW7OFF, DEF_STR( Off ) )
  811.     PORT_DIPSETTING(   SW7ON,  DEF_STR( On ) )
  812.     PORT_DIPNAME( SW6, SW6OFF, DEF_STR( Unknown ) )
  813.     PORT_DIPSETTING(   SW6OFF, DEF_STR( Off ) )
  814.     PORT_DIPSETTING(   SW6ON,  DEF_STR( On ) )
  815.     PORT_DIPNAME( SW5, SW5OFF, DEF_STR( Unknown ) )
  816.     PORT_DIPSETTING(   SW5OFF, DEF_STR( Off ) )
  817.     PORT_DIPSETTING(   SW5ON,  DEF_STR( On ) )
  818.     PORT_DIPNAME( SW4, SW4OFF, DEF_STR( Unknown ) )
  819.     PORT_DIPSETTING(   SW4OFF, DEF_STR( Off ) )
  820.     PORT_DIPSETTING(   SW4ON,  DEF_STR( On ) )
  821.     PORT_SERVICE( SW3, SW3ON )
  822.     PORT_DIPNAME( SW2, SW2OFF, DEF_STR( Unknown ) )
  823.     PORT_DIPSETTING(   SW2OFF, DEF_STR( Off ) )
  824.     PORT_DIPSETTING(   SW2ON,  DEF_STR( On ) )
  825.     PORT_DIPNAME( SW1, SW1ON,  DEF_STR( Unknown ) )
  826.     PORT_DIPSETTING(   SW1OFF, DEF_STR( Off ) )
  827.     PORT_DIPSETTING(   SW1ON,  DEF_STR( On ) )
  828.  
  829.     PORT_START /* inputs */
  830.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
  831.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_START1 )
  832.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_START2 )
  833.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  834.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
  835.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
  836.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
  837.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
  838.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
  839.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  840.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
  841.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  842.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
  843.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
  844.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
  845.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
  846.  
  847.     PORT_START /* analog stick X - unused */
  848.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  849.  
  850.     PORT_START /* analog stick Y - unused */
  851.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  852. INPUT_PORTS_END
  853.  
  854.  
  855.  
  856. void warrior_init_machine (void)
  857. {
  858.     ccpu_Config (1, CCPU_MEMSIZE_8K, CCPU_MONITOR_BILEV);
  859.     cinemat_set_sound_handler (warrior_sound_w);
  860. }
  861.  
  862. void init_warrior(void)
  863. {
  864.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 0, 1, 0);
  865. }
  866.  
  867. CINEMA_MACHINE (warrior, 0, 0, 1024, 780, SOUND_SAMPLES, &warrior_samples_interface)
  868.  
  869.  
  870.  
  871.  
  872. /***************************************************************************
  873.  
  874.   Armor Attack
  875.  
  876. ***************************************************************************/
  877.  
  878. INPUT_PORTS_START( armora )
  879.     PORT_START /* switches */
  880.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  881.     PORT_SERVICE( SW7,     SW7ON )
  882.     PORT_DIPNAME( SW5,     SW5OFF,        DEF_STR( Demo_Sounds ) )
  883.     PORT_DIPSETTING(       SW5OFF,        DEF_STR( Off ) )
  884.     PORT_DIPSETTING(       SW5ON,         DEF_STR( On ) )
  885.     PORT_DIPNAME( SW4|SW3, SW4OFF|SW3OFF, DEF_STR( Coinage ) )
  886.     PORT_DIPSETTING(       SW4ON |SW3OFF, DEF_STR( 2C_1C ) )
  887.     PORT_DIPSETTING(       SW4ON |SW3ON,  DEF_STR( 4C_3C ) )
  888.     PORT_DIPSETTING(       SW4OFF|SW3OFF, DEF_STR( 1C_1C ) )
  889.     PORT_DIPSETTING(       SW4OFF|SW3ON,  DEF_STR( 2C_3C ) )
  890.     PORT_DIPNAME( SW2|SW1, SW2OFF|SW1OFF, DEF_STR( Lives ) )
  891.     PORT_DIPSETTING(       SW2ON |SW1ON,  "2" )
  892.     PORT_DIPSETTING(       SW2OFF|SW1ON,  "3" )
  893.     PORT_DIPSETTING(       SW2ON |SW1OFF, "4" )
  894.     PORT_DIPSETTING(       SW2OFF|SW1OFF, "5" )
  895.  
  896.     PORT_START /* inputs */
  897.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  898.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
  899.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  900.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER1 )
  901.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
  902.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
  903.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
  904.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
  905.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
  906.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
  907.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  908.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  909.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
  910.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  911.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_START1 )
  912.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER2 )
  913.  
  914.     PORT_START /* analog stick X - unused */
  915.     PORT_BIT ( 0xff, IP_ACTIVE_LOW,  IPT_UNUSED )
  916.  
  917.     PORT_START /* analog stick Y - unused */
  918.     PORT_BIT ( 0xff, IP_ACTIVE_LOW,  IPT_UNUSED )
  919. INPUT_PORTS_END
  920.  
  921.  
  922.  
  923. void armora_init_machine (void)
  924. {
  925.     ccpu_Config (1, CCPU_MEMSIZE_16K, CCPU_MONITOR_BILEV);
  926.     cinemat_set_sound_handler (0);
  927. }
  928.  
  929. void init_armora(void)
  930. {
  931.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 1, 0, 0);
  932. }
  933.  
  934. CINEMA_MACHINE (armora, 0, 0, 1024, 772, 0, 0)
  935.  
  936.  
  937.  
  938. /***************************************************************************
  939.  
  940.   Solar Quest
  941.  
  942. ***************************************************************************/
  943.  
  944. INPUT_PORTS_START( solarq )
  945.     PORT_START /* switches */
  946.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  947.     PORT_SERVICE( SW7,       SW7ON )
  948.     PORT_DIPNAME( SW2,       SW2OFF,          DEF_STR( Bonus_Life ) )
  949.     PORT_DIPSETTING(       SW2OFF,          "25 captures" )
  950.     PORT_DIPSETTING(       SW2ON,           "40 captures" )
  951.     PORT_DIPNAME( SW6,       SW6OFF,          DEF_STR( Free_Play ) )
  952.     PORT_DIPSETTING(       SW6OFF,          DEF_STR( Off ) )
  953.     PORT_DIPSETTING(       SW6ON,          DEF_STR( On ) )
  954.     PORT_DIPNAME( SW1|SW3, SW1OFF|SW3OFF, DEF_STR( Coinage ) )
  955.     PORT_DIPSETTING(       SW3ON |SW1OFF, DEF_STR( 2C_1C ) )
  956.     PORT_DIPSETTING(       SW3ON |SW1ON,  DEF_STR( 4C_3C ) )
  957.     PORT_DIPSETTING(       SW3OFF|SW1OFF, DEF_STR( 1C_1C ) )
  958.     PORT_DIPSETTING(       SW3OFF|SW1ON,  DEF_STR( 2C_3C ) )
  959.     PORT_DIPNAME( SW5|SW4, SW5OFF|SW5OFF, DEF_STR( Lives ) )
  960.     PORT_DIPSETTING(       SW5OFF|SW4OFF, "2" )
  961.     PORT_DIPSETTING(       SW5ON |SW4OFF, "3" )
  962.     PORT_DIPSETTING(       SW5OFF|SW4ON,  "4" )
  963.     PORT_DIPSETTING(       SW5ON |SW4ON,  "5" )
  964.  
  965.     PORT_START /* inputs */
  966.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
  967.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
  968.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_UNUSED )
  969.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
  970.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
  971.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
  972.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
  973.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
  974.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
  975.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
  976.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER1 )
  977.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
  978.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) /* also hyperspace */
  979.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
  980.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  981.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  982.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_START2 ) /* also nova */
  983.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
  984.  
  985.     PORT_START /* analog stick X - unused */
  986.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  987.  
  988.     PORT_START /* analog stick Y - unused */
  989.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  990. INPUT_PORTS_END
  991.  
  992.  
  993. void solarq_init_machine (void)
  994. {
  995.     ccpu_Config (1, CCPU_MEMSIZE_16K, CCPU_MONITOR_BILEV);
  996.     cinemat_set_sound_handler (solarq_sound_w);
  997. }
  998.  
  999. void init_solarq(void)
  1000. {
  1001.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 1, 1, solarq_overlay);
  1002. }
  1003.  
  1004.  
  1005. CINEMA_MACHINE (solarq, 0, 0, 1024, 768, SOUND_SAMPLES, &solarq_samples_interface)
  1006.  
  1007.  
  1008.  
  1009. /***************************************************************************
  1010.  
  1011.   Demon
  1012.  
  1013. ***************************************************************************/
  1014.  
  1015. INPUT_PORTS_START( demon )
  1016.     PORT_START /* switches */
  1017.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  1018.     PORT_DIPNAME( SW7,     SW7OFF,        DEF_STR( Free_Play ) )
  1019.     PORT_DIPSETTING(       SW7OFF,        DEF_STR( Off ) )
  1020.     PORT_DIPSETTING(       SW7ON,         DEF_STR( On ) )
  1021.     PORT_DIPNAME( SW6,     SW6OFF,        DEF_STR( Unknown ) )
  1022.     PORT_DIPSETTING(       SW6OFF,        DEF_STR( Off ) )
  1023.     PORT_DIPSETTING(       SW6ON,         DEF_STR( On ) )
  1024.     PORT_DIPNAME( SW5,     SW5OFF,        DEF_STR( Unknown ) )
  1025.     PORT_DIPSETTING(       SW5OFF,        DEF_STR( Off ) )
  1026.     PORT_DIPSETTING(       SW5ON,         DEF_STR( On ) )
  1027.     PORT_DIPNAME( SW3|SW4, SW3ON |SW4ON,  DEF_STR( Lives ) )
  1028.     PORT_DIPSETTING(       SW3ON |SW4ON,  "3")
  1029.     PORT_DIPSETTING(       SW3OFF|SW4ON,  "4" )
  1030.     PORT_DIPSETTING(       SW3ON |SW4OFF, "5" )
  1031.     PORT_DIPSETTING(       SW3OFF|SW4OFF, "6" )
  1032.     PORT_DIPNAME( SW2|SW1, SW2OFF|SW1OFF, DEF_STR( Coinage ) )
  1033.     PORT_DIPSETTING(       SW2ON |SW1OFF, DEF_STR( 2C_1C ) )
  1034.     PORT_DIPSETTING(       SW2ON |SW1ON,  DEF_STR( 4C_3C ) )
  1035.     PORT_DIPSETTING(       SW2OFF|SW1OFF, DEF_STR( 1C_1C ) )
  1036.     PORT_DIPSETTING(       SW2OFF|SW1ON,  DEF_STR( 2C_3C ) )
  1037.  
  1038.     PORT_START /* inputs */
  1039.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* also mapped to Button 3, player 2 */
  1040.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  1041.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  1042.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER2 )
  1043.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER2 )
  1044.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
  1045.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
  1046.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_TILT )
  1047.     PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
  1048.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1049.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  1050.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  1051.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_PLAYER1 )
  1052.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_PLAYER1 )
  1053.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
  1054.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
  1055.  
  1056.     PORT_START /* analog stick X - unused */
  1057.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1058.  
  1059.     PORT_START /* analog stick Y - unused */
  1060.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1061. INPUT_PORTS_END
  1062.  
  1063.  
  1064.  
  1065. void demon_init_machine (void)
  1066. {
  1067.     unsigned char *RAM = memory_region(REGION_CPU2);
  1068.  
  1069.     demon_z80ctc_interface.baseclock[0] = Machine->drv->cpu[1].cpu_clock;
  1070.     z80ctc_init(&demon_z80ctc_interface);
  1071.  
  1072.     ccpu_Config (1, CCPU_MEMSIZE_16K, CCPU_MONITOR_BILEV);
  1073.     cinemat_set_sound_handler (demon_sound_w);
  1074.  
  1075.     RAM[0x0091]=0xcb;    /* bit 7,a */
  1076.     RAM[0x0092]=0x7f;
  1077.     RAM[0x0093]=0xc2;    /* jp nz,$0088 */
  1078.     RAM[0x0094]=0x88;
  1079.     RAM[0x0095]=0x00;
  1080.     RAM[0x0096]=0xc3;    /* jp $00fd */
  1081.     RAM[0x0097]=0xfd;
  1082.     RAM[0x0098]=0x00;
  1083. }
  1084.  
  1085. void init_demon(void)
  1086. {
  1087.     cinemat_select_artwork (CCPU_MONITOR_BILEV, 0, 0, 0);
  1088. }
  1089.  
  1090. static Z80_DaisyChain daisy_chain[] =
  1091. {
  1092.     { z80ctc_reset, z80ctc_interrupt, z80ctc_reti, 0 }, /* CTC number 0 */
  1093.     { 0,0,0,-1}         /* end mark */
  1094. };
  1095.  
  1096.  
  1097. /* Note: the CPU speed is somewhat arbitrary as the cycle timings in
  1098.    the core are incomplete. */
  1099. static struct MachineDriver machine_driver_demon =
  1100. {
  1101.     /* basic machine hardware */
  1102.     {
  1103.         {
  1104.             CPU_CCPU,
  1105.             5000000,
  1106.             readmem,writemem,readport,writeport,
  1107.             cinemat_clear_list, 1
  1108.         },
  1109.         {
  1110.             CPU_Z80 | CPU_AUDIO_CPU,
  1111.             3579545,    /* 3.579545 Mhz */
  1112.             demon_sound_readmem,demon_sound_writemem,0,demon_sound_writeport,
  1113.             0,0,
  1114.             0,0,&daisy_chain
  1115.         }
  1116.     },
  1117.     38, 0,    /* frames per second, vblank duration (vector game, so no vblank) */
  1118.     1,
  1119.     demon_init_machine,
  1120.  
  1121.     /* video hardware */
  1122.     400, 300, { 0, 1024, 0, 800 },
  1123.     0,
  1124.     256 + 32768, 256,
  1125.      cinemat_init_colors,
  1126.  
  1127.     VIDEO_TYPE_VECTOR,
  1128.     0,
  1129.     cinemat_vh_start,
  1130.     cinemat_vh_stop,
  1131.     cinemat_vh_screenrefresh,
  1132.  
  1133.     /* sound hardware */
  1134.     0,0,0,0,
  1135.     {
  1136.         {
  1137.             SOUND_AY8910,
  1138.             &demon_ay8910_interface
  1139.         }
  1140.     }
  1141. };
  1142.  
  1143.  
  1144.  
  1145. /***************************************************************************
  1146.  
  1147.   War of the Worlds
  1148.  
  1149. ***************************************************************************/
  1150.  
  1151. INPUT_PORTS_START( wotw )
  1152.     PORT_START /* switches */
  1153.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  1154.     PORT_SERVICE( SW7, SW7OFF )
  1155.     PORT_DIPNAME( SW6, SW6OFF, DEF_STR( Free_Play ) )
  1156.     PORT_DIPSETTING(   SW6OFF, DEF_STR( Off ) )
  1157.     PORT_DIPSETTING(   SW6ON,  DEF_STR( On ) )
  1158.     PORT_DIPNAME( SW4, SW4OFF, DEF_STR( Coinage ) )
  1159.     PORT_DIPSETTING(   SW4OFF, DEF_STR( 1C_1C ) )
  1160.     PORT_DIPSETTING(   SW4ON,  DEF_STR( 2C_3C ) )
  1161.     PORT_DIPNAME( SW2, SW2OFF, DEF_STR( Lives ) )
  1162.     PORT_DIPSETTING(   SW2OFF, "3" )
  1163.     PORT_DIPSETTING(   SW2ON,  "5" )
  1164.     PORT_DIPNAME( SW1, SW1OFF, DEF_STR( Unknown ) )
  1165.     PORT_DIPSETTING(   SW1OFF, DEF_STR( Off ) )
  1166.     PORT_DIPSETTING(   SW1ON,  DEF_STR( On ) )
  1167.     PORT_DIPNAME( SW3, SW3OFF, DEF_STR( Unknown ) )
  1168.     PORT_DIPSETTING(   SW3OFF, DEF_STR( Off ) )
  1169.     PORT_DIPSETTING(   SW3ON,  DEF_STR( On ) )
  1170.     PORT_DIPNAME( SW5, SW5OFF, DEF_STR( Unknown ) )
  1171.     PORT_DIPSETTING(   SW5OFF, DEF_STR( Off ) )
  1172.     PORT_DIPSETTING(   SW5ON,  DEF_STR( On ) )
  1173.  
  1174.     PORT_START /* inputs */
  1175.     PORT_BIT ( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
  1176.     PORT_BIT ( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
  1177.     PORT_BIT ( 0x2000, IP_ACTIVE_LOW, IPT_UNUSED )
  1178.     PORT_BIT ( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 )
  1179.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
  1180.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 )
  1181.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
  1182.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  1183.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
  1184.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY )
  1185.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
  1186.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED )
  1187.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
  1188.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW, IPT_START2 )
  1189.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW, IPT_UNUSED )
  1190.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
  1191.  
  1192.     PORT_START /* analog stick X - unused */
  1193.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1194.  
  1195.     PORT_START /* analog stick Y - unused */
  1196.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1197. INPUT_PORTS_END
  1198.  
  1199.  
  1200.  
  1201. void wotw_init_machine (void)
  1202. {
  1203.     ccpu_Config (1, CCPU_MEMSIZE_16K, CCPU_MONITOR_WOWCOL);
  1204.     cinemat_set_sound_handler (0);
  1205. }
  1206.  
  1207. void init_wotw(void)
  1208. {
  1209.     cinemat_select_artwork (CCPU_MONITOR_WOWCOL, 0, 0, 0);
  1210. }
  1211.  
  1212.  
  1213. CINEMA_MACHINE (wotw, 0, 0, 1024, 768, 0, 0)
  1214.  
  1215.  
  1216.  
  1217.  
  1218. /***************************************************************************
  1219.  
  1220.   Boxing Bugs
  1221.  
  1222. ***************************************************************************/
  1223.  
  1224. INPUT_PORTS_START( boxingb )
  1225.     PORT_START /* switches */
  1226.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 1 )
  1227.     PORT_SERVICE( SW7,       SW7ON )
  1228.     PORT_DIPNAME( SW6,       SW6OFF,          DEF_STR( Free_Play ) )
  1229.     PORT_DIPSETTING(       SW6OFF,          DEF_STR( Off ) )
  1230.     PORT_DIPSETTING(       SW6ON,          DEF_STR( On ) )
  1231.     PORT_DIPNAME( SW5,       SW5OFF,          DEF_STR( Demo_Sounds ) )
  1232.     PORT_DIPSETTING(       SW5OFF,          DEF_STR( Off ) )
  1233.     PORT_DIPSETTING(       SW5ON,          DEF_STR( On ) )
  1234.     PORT_DIPNAME( SW4,       SW4ON,          DEF_STR( Bonus_Life ) )
  1235.     PORT_DIPSETTING(       SW4ON,          "30,000" )
  1236.     PORT_DIPSETTING(       SW4OFF,          "50,000" )
  1237.     PORT_DIPNAME( SW3,       SW3ON,          DEF_STR( Lives ) )
  1238.     PORT_DIPSETTING(       SW3OFF,          "3" )
  1239.     PORT_DIPSETTING(       SW3ON,          "5" )
  1240.     PORT_DIPNAME( SW2|SW1, SW2OFF|SW1OFF, DEF_STR( Coinage ) )
  1241.     PORT_DIPSETTING(       SW2ON |SW1OFF, DEF_STR( 2C_1C ) )
  1242.     PORT_DIPSETTING(       SW2ON |SW1ON,  DEF_STR( 4C_3C ) )
  1243.     PORT_DIPSETTING(       SW2OFF|SW1OFF, DEF_STR( 1C_1C ) )
  1244.     PORT_DIPSETTING(       SW2OFF|SW1ON,  DEF_STR( 2C_3C ) )
  1245.  
  1246.     PORT_START /* inputs */
  1247.     PORT_BIT ( 0xf000, IP_ACTIVE_HIGH, IPT_UNUSED )    /* dial */
  1248.     PORT_BIT ( 0x0800, IP_ACTIVE_LOW,  IPT_UNUSED )
  1249.     PORT_BIT ( 0x0400, IP_ACTIVE_LOW,  IPT_UNUSED )
  1250.     PORT_BIT ( 0x0200, IP_ACTIVE_LOW,  IPT_UNUSED )
  1251.     PORT_BIT ( 0x0100, IP_ACTIVE_LOW,  IPT_UNUSED )
  1252.     PORT_BIT ( 0x0080, IP_ACTIVE_LOW,  IPT_UNUSED )
  1253.     PORT_BIT ( 0x0040, IP_ACTIVE_LOW,  IPT_UNUSED )
  1254.     PORT_BIT ( 0x0020, IP_ACTIVE_LOW,  IPT_BUTTON1 | IPF_PLAYER1 )
  1255.     PORT_BIT ( 0x0010, IP_ACTIVE_LOW,  IPT_BUTTON2 | IPF_PLAYER1 )
  1256.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW,  IPT_BUTTON3 | IPF_PLAYER1 )
  1257.     PORT_BIT ( 0x0008, IP_ACTIVE_LOW,  IPT_START2 )
  1258.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW,  IPT_BUTTON3 | IPF_PLAYER2 )
  1259.     PORT_BIT ( 0x0004, IP_ACTIVE_LOW,  IPT_START1 )
  1260.     PORT_BIT ( 0x0002, IP_ACTIVE_LOW,  IPT_BUTTON2 | IPF_PLAYER2 )
  1261.     PORT_BIT ( 0x0001, IP_ACTIVE_LOW,  IPT_BUTTON1 | IPF_PLAYER2 )
  1262.  
  1263.     PORT_START /* analog stick X - unused */
  1264.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1265.  
  1266.     PORT_START /* analog stick Y - unused */
  1267.     PORT_BIT ( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  1268.  
  1269.     PORT_START /* fake (in4) */
  1270.     PORT_ANALOG( 0xff, 0x80, IPT_DIAL, 100, 5, 0x00, 0xff )
  1271. INPUT_PORTS_END
  1272.  
  1273.  
  1274.  
  1275. static READ_HANDLER( boxingb_input_port_1_r )
  1276. {
  1277.     if (cinemat_output_port_r(0)  & 0x80)
  1278.         return ((input_port_4_r(0) & 0x0f) << 12) + input_port_1_r(0);
  1279.     else
  1280.         return ((input_port_4_r(0) & 0xf0) << 8)  + input_port_1_r(0);
  1281. }
  1282.  
  1283. void boxingb_init_machine (void)
  1284. {
  1285.     install_port_read_handler(0, CCPU_PORT_IOINPUTS, CCPU_PORT_IOINPUTS, boxingb_input_port_1_r );
  1286.  
  1287.     ccpu_Config (1, CCPU_MEMSIZE_32K, CCPU_MONITOR_WOWCOL);
  1288.     cinemat_set_sound_handler (0);
  1289. }
  1290.  
  1291. void init_boxingb(void)
  1292. {
  1293.     cinemat_select_artwork (CCPU_MONITOR_WOWCOL, 0, 0, 0);
  1294. }
  1295.  
  1296.  
  1297. CINEMA_MACHINE (boxingb, 0, 0, 1024, 768, 0, 0)
  1298.  
  1299.  
  1300.  
  1301. ROM_START( spacewar )
  1302.     ROM_REGION( 0x1000, REGION_CPU1 )    /* 4k for code */
  1303.     ROM_LOAD_GFX_EVEN( "spacewar.1l", 0x0000, 0x0800, 0xedf0fd53 )
  1304.     ROM_LOAD_GFX_ODD ( "spacewar.2r", 0x0000, 0x0800, 0x4f21328b )
  1305. ROM_END
  1306.  
  1307. ROM_START( barrier )
  1308.     ROM_REGION( 0x1000, REGION_CPU1 )    /* 4k for code */
  1309.     ROM_LOAD_GFX_EVEN( "barrier.t7", 0x0000, 0x0800, 0x7c3d68c8 )
  1310.     ROM_LOAD_GFX_ODD ( "barrier.p7", 0x0000, 0x0800, 0xaec142b5 )
  1311. ROM_END
  1312.  
  1313. ROM_START( starhawk )
  1314.     ROM_REGION( 0x1000, REGION_CPU1 )    /* 4k for code */
  1315.     ROM_LOAD_GFX_EVEN( "u7", 0x0000, 0x0800, 0x376e6c5c )
  1316.     ROM_LOAD_GFX_ODD ( "r7", 0x0000, 0x0800, 0xbb71144f )
  1317. ROM_END
  1318.  
  1319. ROM_START( starcas )
  1320.     ROM_REGION( 0x2000, REGION_CPU1 )    /* 8k for code */
  1321.     ROM_LOAD_GFX_EVEN( "starcas3.t7", 0x0000, 0x0800, 0xb5838b5d )
  1322.     ROM_LOAD_GFX_ODD ( "starcas3.p7", 0x0000, 0x0800, 0xf6bc2f4d )
  1323.     ROM_LOAD_GFX_EVEN( "starcas3.u7", 0x1000, 0x0800, 0x188cd97c )
  1324.     ROM_LOAD_GFX_ODD ( "starcas3.r7", 0x1000, 0x0800, 0xc367b69d )
  1325. ROM_END
  1326.  
  1327. ROM_START( starcas1 )
  1328.     ROM_REGION( 0x2000, REGION_CPU1 )    /* 8k for code */
  1329.     ROM_LOAD_GFX_EVEN( "starcast.t7", 0x0000, 0x0800, 0x65d0a225 )
  1330.     ROM_LOAD_GFX_ODD ( "starcast.p7", 0x0000, 0x0800, 0xd8f58d9a )
  1331.     ROM_LOAD_GFX_EVEN( "starcast.u7", 0x1000, 0x0800, 0xd4f35b82 )
  1332.     ROM_LOAD_GFX_ODD ( "starcast.r7", 0x1000, 0x0800, 0x9fd3de54 )
  1333. ROM_END
  1334.  
  1335. ROM_START( tailg )
  1336.     ROM_REGION( 0x2000, REGION_CPU1 )    /* 8k for code */
  1337.     ROM_LOAD_GFX_EVEN( "tgunner.t70", 0x0000, 0x0800, 0x21ec9a04 )
  1338.     ROM_LOAD_GFX_ODD ( "tgunner.p70", 0x0000, 0x0800, 0x8d7410b3 )
  1339.     ROM_LOAD_GFX_EVEN( "tgunner.t71", 0x1000, 0x0800, 0x2c954ab6 )
  1340.     ROM_LOAD_GFX_ODD ( "tgunner.p71", 0x1000, 0x0800, 0x8e2c8494 )
  1341. ROM_END
  1342.  
  1343. ROM_START( ripoff )
  1344.     ROM_REGION( 0x2000, REGION_CPU1 )    /* 8k for code */
  1345.     ROM_LOAD_GFX_EVEN( "ripoff.t7", 0x0000, 0x0800, 0x40c2c5b8 )
  1346.     ROM_LOAD_GFX_ODD ( "ripoff.p7", 0x0000, 0x0800, 0xa9208afb )
  1347.     ROM_LOAD_GFX_EVEN( "ripoff.u7", 0x1000, 0x0800, 0x29c13701 )
  1348.     ROM_LOAD_GFX_ODD ( "ripoff.r7", 0x1000, 0x0800, 0x150bd4c8 )
  1349. ROM_END
  1350.  
  1351. ROM_START( speedfrk )
  1352.     ROM_REGION( 0x2000, REGION_CPU1 )    /* 8k for code */
  1353.     ROM_LOAD_GFX_EVEN( "speedfrk.t7", 0x0000, 0x0800, 0x3552c03f )
  1354.     ROM_LOAD_GFX_ODD ( "speedfrk.p7", 0x0000, 0x0800, 0x4b90cdec )
  1355.     ROM_LOAD_GFX_EVEN( "speedfrk.u7", 0x1000, 0x0800, 0x616c7cf9 )
  1356.     ROM_LOAD_GFX_ODD ( "speedfrk.r7", 0x1000, 0x0800, 0xfbe90d63 )
  1357. ROM_END
  1358.  
  1359. ROM_START( sundance )
  1360.     ROM_REGION( 0x2000, REGION_CPU1 )    /* 8k for code */
  1361.     ROM_LOAD_GFX_EVEN( "sundance.t7", 0x0000, 0x0800, 0xd5b9cb19 )
  1362.     ROM_LOAD_GFX_ODD ( "sundance.p7", 0x0000, 0x0800, 0x445c4f20 )
  1363.     ROM_LOAD_GFX_EVEN( "sundance.u7", 0x1000, 0x0800, 0x67887d48 )
  1364.     ROM_LOAD_GFX_ODD ( "sundance.r7", 0x1000, 0x0800, 0x10b77ebd )
  1365. ROM_END
  1366.  
  1367. ROM_START( warrior )
  1368.     ROM_REGION( 0x2000, REGION_CPU1 )    /* 8k for code */
  1369.     ROM_LOAD_GFX_EVEN( "warrior.t7", 0x0000, 0x0800, 0xac3646f9 )
  1370.     ROM_LOAD_GFX_ODD ( "warrior.p7", 0x0000, 0x0800, 0x517d3021 )
  1371.     ROM_LOAD_GFX_EVEN( "warrior.u7", 0x1000, 0x0800, 0x2e39340f )
  1372.     ROM_LOAD_GFX_ODD ( "warrior.r7", 0x1000, 0x0800, 0x8e91b502 )
  1373. ROM_END
  1374.  
  1375. ROM_START( armora )
  1376.     ROM_REGION( 0x4000, REGION_CPU1 )    /* 16k for code */
  1377.     ROM_LOAD_GFX_EVEN( "ar414le.t6", 0x0000, 0x1000, 0xd7e71f84 )
  1378.     ROM_LOAD_GFX_ODD ( "ar414lo.p6", 0x0000, 0x1000, 0xdf1c2370 )
  1379.     ROM_LOAD_GFX_EVEN( "ar414ue.u6", 0x2000, 0x1000, 0xb0276118 )
  1380.     ROM_LOAD_GFX_ODD ( "ar414uo.r6", 0x2000, 0x1000, 0x229d779f )
  1381. ROM_END
  1382.  
  1383. ROM_START( solarq )
  1384.     ROM_REGION( 0x4000, REGION_CPU1 )    /* 16k for code */
  1385.     ROM_LOAD_GFX_EVEN( "solar.6t", 0x0000, 0x1000, 0x1f3c5333 )
  1386.     ROM_LOAD_GFX_ODD ( "solar.6p", 0x0000, 0x1000, 0xd6c16bcc )
  1387.     ROM_LOAD_GFX_EVEN( "solar.6u", 0x2000, 0x1000, 0xa5970e5c )
  1388.     ROM_LOAD_GFX_ODD ( "solar.6r", 0x2000, 0x1000, 0xb763fff2 )
  1389. ROM_END
  1390.  
  1391. ROM_START( demon )
  1392.     ROM_REGION( 0x4000, REGION_CPU1 )    /* 16k for code */
  1393.     ROM_LOAD_GFX_EVEN( "demon.7t",  0x0000, 0x1000, 0x866596c1 )
  1394.     ROM_LOAD_GFX_ODD ( "demon.7p",  0x0000, 0x1000, 0x1109e2f1 )
  1395.     ROM_LOAD_GFX_EVEN( "demon.7u",  0x2000, 0x1000, 0xd447a3c3 )
  1396.     ROM_LOAD_GFX_ODD ( "demon.7r",  0x2000, 0x1000, 0x64b515f0 )
  1397.  
  1398.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for code */
  1399.     ROM_LOAD         ( "demon.snd", 0x0000, 0x1000, 0x1e2cc262 )
  1400. ROM_END
  1401.  
  1402. ROM_START( wotw )
  1403.     ROM_REGION( 0x4000, REGION_CPU1 )    /* 16k for code */
  1404.     ROM_LOAD_GFX_EVEN( "wow_le.t7", 0x0000, 0x1000, 0xb16440f9 )
  1405.     ROM_LOAD_GFX_ODD ( "wow_lo.p7", 0x0000, 0x1000, 0xbfdf4a5a )
  1406.     ROM_LOAD_GFX_EVEN( "wow_ue.u7", 0x2000, 0x1000, 0x9b5cea48 )
  1407.     ROM_LOAD_GFX_ODD ( "wow_uo.r7", 0x2000, 0x1000, 0xc9d3c866 )
  1408. ROM_END
  1409.  
  1410. ROM_START( boxingb )
  1411.     ROM_REGION( 0x8000, REGION_CPU1 )    /* 32k for code */
  1412.     ROM_LOAD_GFX_EVEN( "u1a", 0x0000, 0x1000, 0xd3115b0f )
  1413.     ROM_LOAD_GFX_ODD ( "u1b", 0x0000, 0x1000, 0x3a44268d )
  1414.     ROM_LOAD_GFX_EVEN( "u2a", 0x2000, 0x1000, 0xc97a9cbb )
  1415.     ROM_LOAD_GFX_ODD ( "u2b", 0x2000, 0x1000, 0x98d34ff5 )
  1416.     ROM_LOAD_GFX_EVEN( "u3a", 0x4000, 0x1000, 0x5bb3269b )
  1417.     ROM_LOAD_GFX_ODD ( "u3b", 0x4000, 0x1000, 0x85bf83ad )
  1418.     ROM_LOAD_GFX_EVEN( "u4a", 0x6000, 0x1000, 0x25b51799 )
  1419.     ROM_LOAD_GFX_ODD ( "u4b", 0x6000, 0x1000, 0x7f41de6a )
  1420. ROM_END
  1421.  
  1422.  
  1423.  
  1424. GAME( 1978, spacewar, 0,       spacewar, spacewar, 0,        ROT0,   "Cinematronics", "Space Wars" )
  1425. GAME( 1979, barrier,  0,       barrier,  barrier,  barrier,  ROT270, "Vectorbeam", "Barrier" )
  1426. GAME( 1981, starhawk, 0,       starhawk, starhawk, starhawk, ROT0,   "Cinematronics", "Star Hawk" )
  1427. GAME( 1980, starcas,  0,       starcas,  starcas,  starcas,  ROT0,   "Cinematronics", "Star Castle (version 3)" )
  1428. GAME( 1980, starcas1, starcas, starcas,  starcas,  starcas,  ROT0,   "Cinematronics", "Star Castle (older)" )
  1429. GAME( 1979, tailg,    0,       tailg,    tailg,    tailg,    ROT0,   "Cinematronics", "Tailgunner" )
  1430. GAME( 1979, ripoff,   0,       ripoff,   ripoff,   ripoff,   ROT0,   "Cinematronics", "Rip Off" )
  1431. GAME( 19??, speedfrk, 0,       speedfrk, speedfrk, speedfrk, ROT0,   "Vectorbeam", "Speed Freak" )
  1432. GAMEX(1979, sundance, 0,       sundance, sundance, sundance, ROT270, "Cinematronics", "Sundance", GAME_NOT_WORKING )
  1433. GAME( 1978, warrior,  0,       warrior,  warrior,  warrior,  ROT0,   "Vectorbeam", "Warrior" )
  1434. GAME( 1980, armora,   0,       armora,   armora,   armora,   ROT0,   "Cinematronics", "Armor Attack" )
  1435. GAME( 1981, solarq,   0,       solarq,   solarq,   solarq,   ORIENTATION_FLIP_X, "Cinematronics", "Solar Quest" )
  1436. GAME( 1982, demon,    0,       demon,    demon,    demon,    ROT0,   "Rock-ola", "Demon" )
  1437. GAMEX(1981, wotw,     0,       wotw,     wotw,     wotw,     ROT0,   "Cinematronics", "War of the Worlds", GAME_IMPERFECT_COLORS )
  1438. GAMEX(1981, boxingb,  0,       boxingb,  boxingb,  boxingb,  ROT0,   "Cinematronics", "Boxing Bugs", GAME_IMPERFECT_COLORS )
  1439.